knitr::opts_chunk$set(echo = TRUE,
                      warning = FALSE,
                      message = FALSE,
                      fig.align = 'center')
knitr::opts_knit$set(root.dir = "/mnt/raid5/Personal/tangchao/project/Nanopore/BarcodeDecomplex")
library(GenomicFeatures)
library(ICAS)
library(BioHelper)
library(Biostrings)
library(ggSashimi)
library(Biostrings)
ref <- readDNAStringSet("/mnt/raid61/Personal_data/songjunwei/reference/plasmoDB/PlasmoDB-53_PbergheiANKA_Genome.fasta")
library(GenomicAlignments)
tro <- readGAlignments("/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/tro.minimap2genome.bam")
sch <- readGAlignments("/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/sch.minimap2genome.bam")

sjtro <- unlist(junctions(tro))
sjtro <- data.table(SJ = names(table(as.character(sjtro))), N = as.numeric(table(as.character(sjtro))))
sjsch <- unlist(junctions(sch))
sjsch <- data.table(SJ = names(table(as.character(sjsch))), N = as.numeric(table(as.character(sjsch))))

sjtro$start <- with(as(sjtro[, SJ], "GRanges"), paste0(seqnames, ":", start))
sjtro$end <- with(as(sjtro[, SJ], "GRanges"), paste0(seqnames, ":", end))

sjsch$start <- with(as(sjsch[, SJ], "GRanges"), paste0(seqnames, ":", start))
sjsch$end <- with(as(sjsch[, SJ], "GRanges"), paste0(seqnames, ":", end))

assjtro <- sjtro[start %in% sjtro[, .N, start][N > 1, start] | end %in% sjtro[, .N, end][N > 1, end]]
assjsch <- sjsch[start %in% sjsch[, .N, start][N > 1, start] | end %in% sjsch[, .N, end][N > 1, end]]

countTab <- merge(sjtro[, .(SJ, N)], sjsch[, .(SJ, N)], by = "SJ", all = TRUE)
countTab <- data.frame(countTab[, -1], row.names = countTab[[1]])
colnames(countTab) <- c("tro", "sch")
countTab[is.na(countTab)] <- 0

colanno <- data.frame(row.names = colnames(countTab), Cell = c("sch", "tro"))

icas <- ICASDataSetFromMatrix(countData = countTab, colData = colanno, design = "Cell")
icas <- PSICalculater(icas, MMJF = 0.01, MinSumSpliceSite = 2)


icas_psi <- as.data.table(as.data.frame(icas@psi), keep.rownames = "SJ")
icas_psi <- na.omit(icas_psi)

colnames(countTab) <- paste0(colnames(countTab), "_Count")
icas_psi <- merge(icas_psi, as.data.table(countTab, keep.rownames = "SJ"), by = "SJ")

icas_psi[, dPSI := abs(sch - tro)]
icas_psi[order(dPSI)]
TxDb <- GenomicFeatures::makeTxDbFromGFF("/mnt/raid61/Personal_data/songjunwei/reference/plasmoDB/PlasmoDB-53_PbergheiANKA.gff")
gtf_rg <- rtracklayer::readGFFAsGRanges("/mnt/raid61/Personal_data/songjunwei/reference/plasmoDB/PlasmoDB-53_PbergheiANKA.gff")
library(biovizBase)
library(ggbio)
Mat <- icas_psi[dPSI > 0.4]
Mat <- Mat[order(dPSI, decreasing = T)]
Mat$Rank <- seq_len(nrow(Mat))

bam_all <- "/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/all.minimap2genome.bam"
bam_tro <- "/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/tro.minimap2genome.bam"
bam_sch <- "/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/sch.minimap2genome.bam"
i = 52

sj = Mat[i, SJ]
target_gr <- gtf_rg[subjectHits(findOverlaps(as(sj, "GRanges"), gtf_rg))]

if(length(target_gr) == 0) {
  target_gr <- as(sj, "GRanges")
  start(target_gr) <- start(target_gr) - 1000
  end(target_gr) <- end(target_gr) + 1000
}

if(length(findOverlaps(target_gr, gtf_rg)) == 0) {
  ggSashimi(BamFile = bam_tro,
            # txdb = TxDb,
            fill = "#D95F02",
            query = range(target_gr),
            ruler = c(start(as(sj, "GRanges")), end(as(sj, "GRanges"))),
            color = "red",
            ExtendWidth = 0,
            minMapQuality = 1,
            MinSJ = 1) -> s1

  ggSashimi(BamFile = bam_sch,
            # txdb = TxDb,
            fill = "#1B9E77",
            query = range(target_gr),
            ruler = c(start(as(sj, "GRanges")), end(as(sj, "GRanges"))),
            color = "red",
            ExtendWidth = 0,
            minMapQuality = 1,
            MinSJ = 1) -> s2
} else {
  ggSashimi(BamFile = bam_tro,
            txdb = TxDb, 
            fill = "#D95F02",
            query = range(target_gr),
            ruler = c(start(as(sj, "GRanges")), end(as(sj, "GRanges"))),
            color = "red",
            ExtendWidth = 500,
            minMapQuality = 1,
            MinSJ = 1) -> s1
  ggSashimi(BamFile = bam_sch,
            txdb = TxDb,
            fill = "#1B9E77",
            query = range(target_gr),
            ruler = c(start(as(sj, "GRanges")), end(as(sj, "GRanges"))),
            color = "red",
            ExtendWidth = 500,
            minMapQuality = 1,
            MinSJ = 2) -> s2
}
library(biovizBase)
gr.txdb <- crunch(TxDb, which = range(target_gr))
grl <- split(gr.txdb, gr.txdb$tx_name)
p0 <- ggbio::autoplot(grl, aes(type = type), label = FALSE) + 
  geom_text(aes(x = 111357 - 400, y = 1, label = "PBANKA_0701800.1"))
p00 <- p0@ggplot
gr <- range(target_gr)
params <- Rsamtools::ScanBamParam(flag = Rsamtools::scanBamFlag(isNotPassingQualityControls = FALSE),
                                  what = c("mapq", "flag"),
                                  which = gr,
                                  mapqFilter = NA)
map0 <- GenomicAlignments::readGAlignments(file = bam_tro, param = params, use.names = TRUE)
# map0 <- map0[(start(map0) - start(gr) + width(gr) * 0.5 > 0) & (end(map0) - end(gr) - width(gr) * 0.5 < 0)]
map0 <- map0[start(map0) > start(gr) - 3000]

SegM <- cigarRangesAlongReferenceSpace(cigar(map0), ops = "M", with.ops = TRUE, pos = start(map0))
SegM1 <- GRanges(seqnames = as.character(runValue(seqnames(map0))),
                 ranges = unlist(SegM),
                 reads = rep(names(map0), mapply(length, SegM)))

p1 <- ggbio::autoplot(SegM1, geom = "alignment", group.selfish = FALSE, ylab = NULL, legend = FALSE, which = gr, fill = "#D95F02", colour = "#D95F02")

map0 <- GenomicAlignments::readGAlignments(file = bam_sch, param = params, use.names = TRUE)
# map0 <- map0[(start(map0) - start(gr) + width(gr) * 0.5 > 0) & (end(map0) - end(gr) - width(gr) * 0.5 < 0)]
map0 <- map0[start(map0) > start(gr) - 3000]

SegM <- cigarRangesAlongReferenceSpace(cigar(map0), ops = "M", with.ops = TRUE, pos = start(map0))
SegM2 <- GRanges(seqnames = as.character(runValue(seqnames(map0))),
                 ranges = unlist(SegM),
                 reads = rep(names(map0), mapply(length, SegM)))

p2 <- ggbio::autoplot(SegM2, geom = "alignment", group.selfish = FALSE, ylab = NULL, legend = FALSE, which = gr, fill = "#1B9E77", colour = "#1B9E77")
relH <- c(length(unique(SegM1$reads)), length(unique(SegM2$reads))) + 1

tracks(tro = p1, sch = p2, p00, heights = c(relH/min(relH), 0.5))
tracks(Trophozoite = p1, Schizont = p2, GTF = p00, heights = c(3, 18, 2),
       label.text.angle = 0, label.width = unit(5, "lines")) +
  theme_clear() + theme(axis.line.y = element_blank(), axis.line.x = element_blank())
ggsave("/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/AS_Case_PBANKA_0701800_V2.pdf", width = 9, height = 3)
tracks(Trophozoite = s1@plot$Coverage, Schizont = s2@plot$Coverage, GTF = p00, heights = c(1, 1, 0.2)) +
  theme_clear() + theme(axis.title.y = element_blank(), axis.line.x = element_blank())
ggsave("/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/AS_Case_Sashimi_PBANKA_0701800_V2.pdf", width = 9, height = 3)
ggSashimi(BamFile = bam_all,
          txdb = TxDb,
          query = range(target_gr),
          color = "red", 
          repel = F, 
          ExtendWidth = 0, 
          JunctionReadsSize = 3,
          minMapQuality = NA,
          MinSJ = 1) -> p_cov
p_cov
tracks(Coverage = p_cov@plot$Coverage, 
       Trophozoite = p1, Schizont = p2,
       GTF = p00, heights = c(4, 3, 18, 2), 
       label.text.angle = 0, label.width = unit(5, "lines")) +
  theme_clear() + theme(axis.title.y = element_blank(), axis.line.x = element_blank())

ggsave("/mnt/raid61/Personal_data/tangchao/Temp/20211025/05.TranscriptClean/AS_Case_Sashimi_PBANKA_0701800_V3.pdf", width = 12, height = 4)


tangchao7498/DecodeR documentation built on May 27, 2023, 7:21 p.m.